package com.whnk.pm.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.whnk.common.annotation.CompScope;
import com.whnk.common.pm.constants.EmpConstants;
import com.whnk.common.support.Convert;
import com.whnk.common.utils.StringUtils;
import com.whnk.pm.domain.BaseInfo;
import com.whnk.pm.mapper.BaseInfoMapper;
import com.whnk.pm.mapper.EduInfoMapper;
import com.whnk.pm.mapper.FileInfoMapper;
import com.whnk.pm.mapper.ProjInfoMapper;
import com.whnk.pm.mapper.WorkInfoMapper;
import com.whnk.pm.service.IBaseInfoService;

/**
 * 人员基本 服务层实现
 * 
 * @author whwhnk
 * @date 2019-06-13
 */
@Service
public class BaseInfoServiceImpl implements IBaseInfoService 
{
	@Autowired
	private BaseInfoMapper baseInfoMapper;
	
	@Autowired
	private EduInfoMapper EduInfoMapper;
	
	@Autowired
	private WorkInfoMapper WorkInfoMapper;
	
	@Autowired
	private ProjInfoMapper ProjInfoMapper;
	
	@Autowired
	private FileInfoMapper FileInfoMapper;

	/**
     * 查询人员基本信息
     * 
     * @param empId 人员基本ID
     * @return 人员基本信息
     */
    @Override
	public BaseInfo selectBaseInfoById(String empId)
	{
	    return baseInfoMapper.selectBaseInfoById(empId);
	}
	
	/**
     * 查询人员基本列表
     * 
     * @param baseInfo 人员基本信息
     * @return 人员基本集合
     */
	@Override
	@CompScope
	public List<BaseInfo> selectBaseInfoList(BaseInfo baseInfo)
	{
	    return baseInfoMapper.selectBaseInfoList(baseInfo);
	}
	
    /**
     * 新增人员基本
     * 
     * @param baseInfo 人员基本信息
     * @return 结果
     */
	@Override
	public int insertBaseInfo(BaseInfo baseInfo)
	{
	    return baseInfoMapper.insertBaseInfo(baseInfo);
	}
	
	/**
     * 修改人员基本
     * 
     * @param baseInfo 人员基本信息
     * @return 结果
     */
	@Override
	public int updateBaseInfo(BaseInfo baseInfo)
	{
	    return baseInfoMapper.updateBaseInfo(baseInfo);
	}

	/**
     * 删除人员基本对象，同时删除教育经历、工作经历、项目经历、附件信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteBaseInfoByIds(String ids)
	{
		String[] idsArr = Convert.toStrArray(ids);
		
		StringBuilder idsStr = new StringBuilder("");
		for(String id : idsArr) {
			idsStr.append(id).append(";");
		}
		
		System.out.println("idsStr="+idsStr);
		
		// 删除教育经历
		EduInfoMapper.deleteEduInfoByEmpIds(idsArr);
		
		// 删除工作经历
		WorkInfoMapper.deleteWorkInfoByEmpIds(idsArr);
		
		// 删除项目经历
		ProjInfoMapper.deleteProjInfoByEmpIds(idsArr);
		
		// 删除附件信息
		FileInfoMapper.deleteFileInfoByEmpIds(idsArr);
		
		return baseInfoMapper.deleteBaseInfoByIds(idsArr);
	}

	/**
	 * 校验证件号码唯一性
	 * 
	 * @param empId
	 * @return
	 */
	@Override
	public String checkEmpIdUnique(String empId) {
		BaseInfo baseInfo = baseInfoMapper.selectBaseInfoById(empId);
        if (StringUtils.isNotNull(baseInfo) && empId.equals(baseInfo.getEmpId()))
        	return EmpConstants.EMP_ID_NOT_UNIQUE;
        return EmpConstants.EMP_ID_UNIQUE;
	}
	
	/**
	 * 校验证件号码存在性
	 * 
	 * @param empId
	 * @return
	 */
	@Override
	public String checkEmpIdExist(String empId) {
		BaseInfo baseInfo = baseInfoMapper.selectBaseInfoById(empId);
        if (StringUtils.isNotNull(baseInfo) && empId.equals(baseInfo.getEmpId()))
        	return EmpConstants.EMP_BASE_EXIST;
        return EmpConstants.EMP_BASE_NOT_EXIST;
	}

	public List<String> getAllUserName() {
		BaseInfo baseInfo = new BaseInfo();
		List<BaseInfo> baseInfoList = baseInfoMapper.selectBaseInfoList(baseInfo);
		List<String> stringList = new ArrayList<>();
		for (BaseInfo s : baseInfoList) {
			String item = s.getEmpNm() + "-" + s.getEmpId();
			stringList.add(item);
		}
		return stringList;
	}
}
